import { SlateEditor } from '@wangeditor/editor'
import { message } from 'ant-design-vue';

// const emitter = require("@/event-bus").default; // 假设 emitter 是一个默认导出的事件发射器

/**
 * BaseFn 类作为其他函数类的基类，提供一些基础功能。
 */
class BaseFn {
    constructor(editor) {
        this.editor = editor;
    }

    // getValue 方法获取当前编辑器选中的文本内容
    getValue() {
        const { selection } = this.editor;
        if (selection == null) return "";
        return SlateEditor.string(this.editor, selection);
    }

    // isDisabled 方法检查当前编辑器是否禁用操作
    isDisabled() {
        const { selection } = this.editor;
        if (selection == null) {
            this.editor.restoreSelection();
            if (this.editor.selection == null) {
                message.warn("未选中编辑器")
                // emitter.emit("warn", "未选中编辑器");
                return true;
            }
        }
        return false;
    }

    // exec 方法需要在子类中实现
    exec(opt, ...args) {
        throw new Error("exec method must be implemented");
    }
}

export default BaseFn;
